package com.demandbreakdown.xiyun.strategy;

import jakarta.servlet.http.HttpServletResponse;

import java.io.InputStream;

/**
 * 存储策略接口
 *
 * @author poxz
 */

public interface StorageStrategy {

    /**
     * 上传文件
     *
     * @param inputStream 文件输入流
     * @param filePath    文件路径
     * @param contentType 文件类型
     * @return 文件访问URL
     */
    String upload(InputStream inputStream, String filePath, String contentType);

    /**
     * 删除文件
     *
     * @param filePath 文件路径
     */
    void delete(String filePath);

    /**
     * 判断文件是否存在
     *
     * @param filePath 文件路径
     * @return boolean
     */
    boolean exists(String filePath);

    /**
     * 生成文件下载链接并处理下载
     *
     * @param fileUrl  文件访问URL
     * @param fileName 下载时的文件名
     * @param response HTTP响应对象
     */
    void generateDownloadUrl(String fileUrl, String fileName, HttpServletResponse response);

    /**
     * 获取存储策略名称
     *
     * @return String
     */
    String getStrategyName();
}
